package modelo;

import java.io.Serializable;

import org.joda.time.LocalDate;
import org.mockito.internal.matchers.CompareTo;
import org.uqbar.commons.model.UserException;
import org.uqbar.commons.utils.Observable;

@Observable
public class Asignacion implements Comparable<Asignacion>,Serializable{

	private static final long serialVersionUID = 1L;
	private LocalDate fecha;
	private Horario horario;
	private Empleado empleadoAsignado;

	

	public Asignacion(LocalDate fecha, Horario horario) {
		super();
		this.fecha = fecha;
		this.horario = horario;
		
	}

	public Asignacion() {
		// TODO Auto-generated constructor stub
	}

	public void setEmpleadoAsignado(Empleado empleado) {
		// Aca solo llegaran empleados que pueden cubrir la asignacion
		empleadoAsignado = empleado;
	}
	
	public String ponerCruz(int hora){
		if(hora >= this.horario.getInicio().getValor()  && hora <= this.horario.getFin().getValor()){
			return "X";
		}else{
			return " ";
		}
	}

	public Empleado getEmpleadoAsignado() {
		return empleadoAsignado;
	}

	public Horario getHorario() {
		return horario;
	}

	public void setHorario(Horario horario) {
		if (horario.duracion().getStandardHours() < 4
				|| horario.duracion().getStandardHours() > 8) {
			throw new UserException(
					"La duracion del horario no puede ser menor a 4 horas ni mayor a 8 horas.");
		}
		this.horario = horario;
	}

	public LocalDate getFecha() {
		return fecha;
	}

	public void setFecha(LocalDate fecha) {
		this.fecha = fecha;
	}

	
	@Override
	public int compareTo(Asignacion o) {
		
		return this.getFecha().compareTo(o.getFecha());
	}

	public Asignacion clonar() {
		Asignacion copia = new Asignacion();
		copia.empleadoAsignado = this.empleadoAsignado;
		copia.fecha = this.fecha;
		copia.horario = this.horario;
		return copia;
	}

	

}
